﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Kiiro.Common.Entities;

namespace Kiiro.Common.Utility
{
    public static class Constants
    {
        /// <summary>
        /// Constants representing the Application Name in various cases (Upper, Lower, etc.)
        /// </summary>
        public static class AppName
        {
            public const string Upper = "KIIRO";
            public const string Proper = "Kiiro";
            public const string Lower = "kiiro";
        }
        /// <summary>
        /// Constants representing the Application Name in various cases (Upper, Lower, etc.)
        /// </summary>
        public static class CompanyName
        {
            public const string Name = "Kiiro Software Ltd.";
        }

        /// <summary>
        /// Cache Key Names
        /// </summary>
        public static class CacheKeys
        {
            public const string Title = "Title";
            public const string OpenProjectsCount = "OpenProjectsCount";
            public const string ActiveUsersCount = "ActiveUsersCount";
            public const string Setup = "Setup";
        }

        public static class AssemblyInfo
        {
            public const string SiteDefinition = "Kiiro.SiteDefinition";
            public const string Version = "1.2.0.7";
            public const string Culture = "neutral";
            public const string PublicKeyToken = "5b2f4277f61b7816";
            public const string KiiroMembership = "KiiroMembership";
        }

        public static class MSProjectPlugin
        {
            public const string MinimumPluginVersion = "1.1.0.0";
        }

        public static class SPSiteDefinition
        {
            public const string SolutionId = "3cf3e393-0e11-4e6b-8ec6-b17c96f8ec38";
            public const string Name = "KIIRO";
            public const int TemplateId = 60000;
            public const int PortalId = 0;
            public const int ProjectId = 2;
            public const string SPGroupDescription = "Use this group to give people {0} permission to {1}";

            public static class WebAppFeatureIds
            {
                public const string WebConfig = "814ABEB5-CA12-4e8a-869F-37A7417CC66B";
                public const string VersionAssemblies = "11238C3D-29D8-4228-B179-1023888E3B17";

                public static List<string> AllWebAppFeatureIds
                {
                    get
                    {
                        return new List<string> ( ) {
                            WebConfig, 
                            VersionAssemblies 
                        };
                    }
                }
            }

            public static class SiteFeatureIds
            {
                public const string BasicWebParts = "00BFEA71-1C5E-4A24-B310-BA51C3EB7A57";
                public const string Core = "5232B0C5-5C92-4150-BACE-2783D191F041";
                public const string ThreeStateWorkflow = "FDE5D850-671E-4143-950A-87B473922DC7";
                public const string WebParts = "FB67ABD6-7916-486b-AB83-FBA4066E9556";
                public const string NavigationMaintenance = "D4BD7B9A-48DF-4c4f-96CA-3EAB45787FE9";

                public static List<string> AllSiteFeatureIds
                {
                    get
                    {
                        return new List<string> ( ) {
                            BasicWebParts,
                            Core, 
                            ThreeStateWorkflow,
                            WebParts,
                            NavigationMaintenance
                        };
                    }
                }
            }

            public static class WebFeatureIds
            {
                public const string ApplicationPages = "A8F23189-CA7E-4014-8CCA-2BBC437A6221";
                public const string CustomListsPages = "0002083D-5803-471b-8F49-F2DD07FF9D26";
                public const string EventReceivers = "17AA30A2-BD63-4f56-84B1-F4D26EB2CA66";
                public const string Lists = "2506CDB8-FB9D-4d96-A81E-5BEC418EE1C7";
                public const string MasterPage = "543C8BB2-FD28-4f30-96D7-C03EAF45135C";
                public const string NavigationLists = "{A7B94CE8-4662-439b-8F6C-B1699104FEF3}";
                public const string Portal = "D568FFED-0290-4855-837B-97639838C5CA";
                public const string PortalPages = "A6E483AF-72D7-45b6-B32D-49D45EAB5760";
                public const string Project = "930BA98A-C4BA-4df6-8D5D-01FAF5C7B7F5";
                public const string ProjectPages = "A38890D7-C5D4-434E-851E-CDA1C192C3BC";
                public const string Search = "BA6AC084-55E5-4781-8386-28E8FD9082CC";
                public const string TeamCollab = "00BFEA71-4EA5-48D4-A4AD-7EA5C011ABE5";
                public const string UserPages = "D3D81110-9052-4004-A556-A26FBF6BC522";
                public const string WPSandbox = "90E57881-28F2-4ac8-9DC6-57C4999DDFFB";

                public static List<string> AllPortalFeatureIds
                {
                    get
                    {
                        return new List<string> ( ) { 
                            ApplicationPages, 
                            CustomListsPages, 
                            EventReceivers, 
                            Lists,
                            MasterPage,
                            NavigationLists,
                            Portal,  
                            PortalPages,
                            Search,
                            TeamCollab,
                            UserPages,
                            WPSandbox
                        };
                    }
                }

                public static List<string> AllProjectFeatureIds
                {
                    get
                    {
                        return new List<string> ( ) { 
                            ApplicationPages, 
                            CustomListsPages, 
                            EventReceivers, 
                            Lists,
                            MasterPage,
                            Project,
                            ProjectPages,
                            Search,
                            TeamCollab,
                            UserPages,
                            WPSandbox
                        };
                    }
                }
            }

            public static class TimerJobs
            {
                public const string OldEmailJobType = "Kiiro.Model.TimerJobs.IncomingDiscussionEmailJob";
                public const string OldStatsJobType = "Kiiro.Model.TimerJobs.ProjectStatisticsJob";

                public const string DiscussionsJobName = "Kiiro Incoming Email Comments - ";
                public const string StatisticsJobName = "Kiiro Project Statistics - ";
            }

            /// <summary>
            /// Custom List provisioning constants
            /// </summary>
            public static class CustomListInfo
            {
                public const string BaseCustomItemContentTypeId = SPContentTypeIds.BaseCustomItem;
                public const string CustomListFeatureId = "{2506CDB8-FB9D-4d96-A81E-5BEC418EE1C7}";
                public const string Title = "{0} List";
                public const string Description = "A custom kiiro list for {0}";
                public const string Url = "Lists/{0}";
            }

            public static class ErrorMessages
            {
                public const string UnexepectedError = "An unexpected error occured. Please try again.";
                public const string PermissionsSetupUnknownError = "An unknown error has occurred while setting up the security permissions for the Kiiro {0}.";
            }
        }

        public static class Security
        {
            public const string EK = "@s%>1w#CcvV=b!#@G10E%pws";
            public const string HK = "B6F63AB3";

            public const string AD_AUTH_USERS_DOMAIN_GROUP_NAME = "NT AUTHORITY\\authenticated users";
        }

        /// <summary>
        /// Constants related to Permissions
        /// </summary>
        public static class Permissions
        {
            public const string FBAMembershipProviderName = "KiiroMembership";
            public const string FBAMembershipProviderNameColon = "KiiroMembership:";
            public const string FBA = FBAMembershipProviderName;

            public static readonly List<bool> PermissionBitsREADONLY = new List<bool> { false, true, false, false };

            public static class ErrorMessages
            {
                // Licensing Model
                public const string ValidationError = "License Key validation error. Please contact us for assistance or a new Key.";
                public const string ExpiredKey = "License key expired, please acquire new license key.";
                public const string PortalInstallLimitReached = "Portal Install limit reached.";
                public const string ActiveProjectsLimitReached = "Active Projects limit reached.";
                public const string ActiveUsersLimitReached = "Active Users limit reached.";

                // Permissions Model
                public const string ErrorMessageNullGroup = "The {0} SharePoint Group does not exist.";
                public const string ProjectGroupMembershipUpdatePermissionsFailure = "Updating Team Failed: Not enough permissions to update Group Membership.";
                public const string MissingTeamMemberInfo = "No TeamMember info has been provided for TeamMember to be added to SharePoint Groups.";
            }

            public static class Roles
            {
                /// <summary>
                /// AppRole Collection representing all the Roles used in Kiiro
                /// </summary>
                public static List<AppRole> AllRoles
                {
                    get
                    {
                        return new List<AppRole>
                    {
                        AppRole.SPAdmin,
                        AppRole.SystemAccount,
                        AppRole.Admin,
                        AppRole.User,
                        AppRole.ProjectManager,
                        AppRole.TeamMember,
                        AppRole.Visitor,
                    };
                    }
                }

                /// <summary>
                /// AppRole Collection representing all the Roles used on a Portal Site
                /// </summary>
                public static List<AppRole> PortalRolesAll
                {
                    get
                    {
                        return new List<AppRole>
                    {
                        AppRole.SPAdmin,
                        AppRole.SystemAccount,
                        AppRole.Admin,
                        AppRole.User,
                        AppRole.Visitor,
                    };
                    }
                }

                /// <summary>
                /// AppRole Collection representing all the Roles used on a Project Site
                /// </summary> 
                public static List<AppRole> ProjectRolesAll
                {
                    get
                    {
                        return new List<AppRole>
                    {
                        AppRole.SPAdmin,
                        AppRole.SystemAccount,
                        AppRole.Admin,
                        AppRole.ProjectManager,
                        AppRole.TeamMember,
                        AppRole.Visitor
                    };
                    }
                }

                /// <summary>
                /// AppRole Collection representing all the Roles used on a Project Site that are Project Level specific
                /// </summary> 
                public static List<AppRole> ProjectRolesProjectSpecific
                {
                    get
                    {
                        return new List<AppRole>
                    {
                        AppRole.ProjectManager,
                        AppRole.TeamMember,
                        AppRole.Visitor
                    };
                    }
                }
            }
        }

        public static class SPListUrls
        {
            public const string Projects = "/Lists/Projects";
            public const string Users = "/Lists/Users";
            public const string Setup = "/Lists/Setup";

            public const string Work = "/Lists/Work";
            public const string AttachmentsWorkList = "/Lists/Work/Attachments/";
            public const string ActivityHistory = "/Lists/ActivityHistory";
            public const string Discussions = "/Lists/Discussions";
            public const string Documents = "/Documents";
            public const string Teams = "/Lists/Team";

            public const string MainNavigation = "/Lists/MainNavigation";
            public const string SubNavigation = "/Lists/SubNavigation";
        }

        public static class SPListNames
        {
            public const string Projects = "Projects";
            public const string Users = "Users";
            public const string Setup = "Setup";

            public const string Work = "Work";
            public const string ActivityHistory = "Activity History";
            public const string Discussions = "Discussions";
            public const string Documents = "Documents";
            public const string TeamMembers = "Team";

            public const string MainNavigation = "Kiiro Main Navigation";
            public const string SubNavigation = "Kiiro Sub Navigation";
        }

        public static class SPViewNames
        {
            public const string AllProjects = "All Projects";
            public const string ActiveProjects = "Active Projects";
            public const string BeingPlannedProjects = "Being Planned Projects";
            public const string ClosedProjects = "Closed Projects";

            public const string AllUsers = "All Users";

            public const string AllTeamMembers = "All Items";

            public const string MainNavigation = "Kiiro Main Navigation";
            public const string SubNavigation = "Kiiro Sub Navigation";
        }

        public static class SPContentTypeIds
        {
            public const string BaseCustomItem = "0x01007DDB695C92824a2cBD4F311A690056E9";
            public const string Base = "0x012000B2E408ED639040fbAC667CE3C84638DD";
            public const string ActivityHistory = "0x012000B2E408ED639040fbAC667CE3C84638DD01";
            public const string Comment = "0x012000B2E408ED639040fbAC667CE3C84638DD02";
            public const string Discussion = "0x012000B2E408ED639040fbAC667CE3C84638DD03";
            public const string Document = "0x010100D85C36EB577642b88E78ACFD841315D1";
            public const string User = "0x012000B2E408ED639040fbAC667CE3C84638DD05";
            public const string Project = "0x012000B2E408ED639040fbAC667CE3C84638DD06";
            public const string Setup = "0x012000B2E408ED639040fbAC667CE3C84638DD07";
            public const string TeamMember = "0x012000B2E408ED639040fbAC667CE3C84638DD08";
            public const string Work = "0x012000B2E408ED639040fbAC667CE3C84638DD09";
            public const string Custom = "0x01007DDB695C92824a2cBD4F311A690056E9";

            public const string MainNavigation = "0x0090FA650013D04831AC9136FF51519C14";
            public const string SubNavigation = "0x00FB8E4FF916A841dbB13B801E06916724";
        }

        public static class SearchTypes
        {
            public const string Base = "Kiiro ItemBase Data";
            public const string ActivityHistory = "Kiiro ActivityHistory Data";
            public const string Comment = "Kiiro DiscussionComment Data";
            public const string Discussion = "Kiiro Discussion Data";
            public const string Folder = "Kiiro Folder Data";
            public const string Document = "Kiiro Document Data";
            public const string User = "Kiiro User Data";
            public const string Project = "Kiiro Project Data";
            public const string Setup = "Kiiro Setup Data";
            public const string TeamMember = "Kiiro TeamMember Data";
            public const string Work = "Kiiro Work Data";
            public const string Custom = "Kiiro Base Custom Item";

            public static List<string> AllSearchTypes
            {
                get
                {
                    return new List<string>
                    {
                        Base,
                        ActivityHistory,
                        Comment,
                        Discussion,
                        Folder,
                        Document,
                        User,
                        Project,
                        Setup,
                        TeamMember,
                        Work,
                        Custom
                    };
                }
            }
        }

        public static class PortalFileUrls
        {
            public const string PortalActivity = "/default.aspx";//"/RecentActivity.aspx";
            public const string ProjectsActive = "/ActiveProjects.aspx";
            public const string ProjectsBeingPlanned = "/BeingPlannedProjects.aspx";
            public const string ProjectsClosed = "/ClosedProjects.aspx";
            public const string ProjectNew = "/NewProject.aspx";
            public const string ProjectEdit = "/EditProject.aspx";
            public const string DisplayProject = "/DisplayProject.aspx";
            public const string KiiroEditSetup = "/EditSetup.aspx";
            public const string UserNew = "/NewUser.aspx";
            public const string UserEdit = "/EditUser.aspx";
            public const string UserDisplay = "/DisplayUser.aspx";
            public const string UserAll = "/AllUsers.aspx";
            public const string GroupNew = "/NewGroup.aspx";
            public const string GroupEdit = "/EditGroup.aspx";
            public const string SearchResults = "/SearchResults.aspx";
            public const string Lists = "/Lists.aspx";
            public const string ListItemsAll = "/AllCustomItems.aspx";
            public const string ListItemDisplay = "/DispForm.aspx";
            public const string ListItemEdit = "/EditForm.aspx";
            public const string ListItemNew = "/NewForm.aspx";
            public const string WPSandbox = "/WebPartPage.aspx";
            public const string WorkOnAllProjects = "/WorkOnAllProjects.aspx";

            /// <summary>
            /// 0 = url going to,
            /// 1 = error message if desired or page name
            /// </summary>
            public const string SmartError = "/404.aspx?oldUrl={0}&k={1}";

            public static List<string> AllPortalFileUrls
            {
                get
                {
                    List<string> portalFileUrls = new List<string>
                    {
                        ProjectsActive,
                        ProjectsBeingPlanned,
                        ProjectsClosed,
                        ProjectNew,
                        ProjectEdit,
                        DisplayProject,
                        PortalActivity,
                        KiiroEditSetup,
                        UserNew,
                        UserEdit,
                        UserDisplay,
                        UserAll,
                        GroupNew,
                        GroupEdit,
                        SearchResults,
                        SmartError,
                        Lists,
                        ListItemsAll,
                        ListItemDisplay,
                        ListItemEdit,
                        ListItemNew,
                        WPSandbox,
                        WorkOnAllProjects
                    };
                    return portalFileUrls;
                }
            }
        }

        public static class ProjectFileUrls
        {
            public const string CommentEdit = "/EditComment.aspx";
            public const string DiscussionDisplay = "/DisplayDiscussion.aspx";
            public const string DiscussionEdit = "/EditDiscussion.aspx";
            public const string DiscussionNew = "/NewDiscussion.aspx";
            public const string DiscussionsAll = "/AllDiscussions.aspx";
            public const string Documents = "/Documents.aspx";
            public const string DocumentUpload = "/Upload.aspx";
            public const string DocumentEdit = "/EditDocument.aspx";
            public const string DocumentHistory = "/DocumentHistory.aspx";
            public const string Lists = "/Lists.aspx";
            public const string ListItemsAll = "/AllCustomItems.aspx";
            public const string ListItemDisplay = "/DispForm.aspx";
            public const string ListItemEdit = "/EditForm.aspx";
            public const string ListItemNew = "/NewForm.aspx";
            public const string ProjectDisplay = "/EditProjectSettings.aspx";
            public const string ProjectEdit = "/EditProjectSettings.aspx";
            public const string ProjectSummary = "/default.aspx"; 
            public const string Team = "/Team.aspx";
            public const string TeamMemberEdit = "/EditTeamMember.aspx";
            public const string TeamMemberNew = "/NewTeamMember.aspx";
            public const string IssueNew = "/NewIssue.aspx";
            public const string IssueEdit = "/EditIssue.aspx";
            public const string IssueDisplay = "/DisplayIssue.aspx";
            public const string TaskNew = "/NewTask.aspx";
            public const string TaskEdit = "/EditTask.aspx";
            public const string TaskDisplay = "/DisplayTask.aspx";
            public const string MyWork = "/MyWork.aspx";
            public const string WorkAll = "/AllWork.aspx";
            public const string UserNew = "/NewUser.aspx";
            public const string UserEdit = "/EditUser.aspx";
            public const string UserDisplay = "/DisplayUser.aspx";
            public const string UserAll = "/AllUsers.aspx";
            public const string GroupNew = "/NewGroup.aspx";
            public const string GroupEdit = "/EditGroup.aspx";
            public const string WPSandbox = "/WebPartPage.aspx";

            public static List<string> AllProjectFileUrls
            {
                get
                {
                    List<string> projectFileUrls = new List<string>
                    {
                        CommentEdit,
                        DiscussionDisplay,
                        DiscussionEdit,
                        DiscussionNew,
                        DiscussionsAll,
                        Documents,
                        DocumentUpload,
                        DocumentHistory,
                        DocumentEdit,
                        Lists,
                        ListItemsAll,
                        ListItemDisplay,
                        ListItemEdit,
                        ListItemNew,
                        ProjectDisplay,
                        ProjectEdit,
                        ProjectSummary,
                        Team,
                        TeamMemberEdit,
                        TeamMemberNew,
                        IssueNew,
                        IssueEdit,
                        IssueDisplay,
                        TaskNew,
                        TaskEdit,
                        TaskDisplay,
                        MyWork,
                        WorkAll,
                        UserNew,
                        UserEdit,
                        UserDisplay,
                        UserAll,
                        GroupNew,
                        GroupEdit,
                        WPSandbox
                    };
                    return projectFileUrls;
                }
            }
        }

        #region FieldNames
        public static class BaseEntityFieldNames
        {
            public const string ItemId = "ItemBase.ItemId";
            public const string SiteCollectionId = "ItemBase.SiteCollectionId";
            public const string ServerRelativeUrl = "ItemBase.ServerRelativeUrl";
            public const string CreatedBy = "ItemBase.CreatedBy";
            public const string CreatedDate = "ItemBase.CreatedDate";
            public const string ModifiedBy = "ItemBase.ModifiedBy";
            public const string ModifiedDate = "ItemBase.ModifiedDate";
            public const string IsNew = "ItemBase.IsNew";
            public const string Title = "ItemBase.Title";
            public const string Description = "ItemBase.Description";

            public static List<string> AllFieldNames
            {
                get
                {
                    return new List<string> ( )
                    {
                        ItemId,
                        SiteCollectionId,
                        ServerRelativeUrl,
                        CreatedBy,
                        CreatedDate,
                        ModifiedBy,
                        ModifiedDate,
                        IsNew,
                        Title,
                        Description
                    };
                }
            }
        }

        public static class DiscussionFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string Text = "Discussion.DiscussionText";
            public const string HTMLText = "Discussion.DiscussionHTMLText";
            public const string LastCommentBy = "Discussion.LastCommentBy";
            public const string LastCommentDate = "Discussion.LastCommentDate";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        Text,
                        HTMLText,
                        LastCommentBy,
                        LastCommentDate
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class DocumentFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Description = BaseEntityFieldNames.Description;

            public const string FileLeafRef = "FileLeafRef";
            public const string CurrentVersion = "Document.CurrentVersion";
            public const string IsProjectPlan = "Document.IsProjectPlan";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        FileLeafRef,
                        CurrentVersion,
                        IsProjectPlan
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class CommentFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string Text = "DiscussionComment.CommentText";
            public const string DiscussionId = "DiscussionComment.DiscussionId";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        Text,
                        DiscussionId
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class ProjectFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string StartDate = "Project.StartDate";
            public const string EndDate = "Project.EndDate";
            public const string ProjectStatus = "Project.ProjectStatus";
            public const string TimeMetric = "Project.TimeMetric";
            public const string SummaryNote = "Project.SummaryNote";
            public const string ProjectPlanFileUrl = "Project.ProjectPlanFileUrl";
            public const string ProjectManagerIds = "Project.ProjectManagerIds";
            public const string TotalWork = "Project.TotalWork";
            public const string ActualWork = "Project.ActualWork";
            public const string ProjectedWork = "Project.ProjectedWork";
            public const string PlanDirty = "Project.PlanDirty";
            public const string TasksDirty = "Project.TasksDirty";
            public const string TaskStats = "Project.TaskStats";
            public const string IssueStats = "Project.IssueStats";
            public const string DocumentStats = "Project.DocumentStats";
            public const string DiscussionStats = "Project.DiscussionStats";
            public const string IsSynched = "Project.IsSynched";
            public const string ServerRelativeWebUrl = "Project.ServerRelativeWebUrl";
            public const string LastUpdatedSummaryNote = "Project.LastUpdatedSummaryNote";
            public const string IsWPSandboxActivated = "Project.IsWPSandboxActivated";
            public const string WPSandboxNavText = "Project.WPSandboxNavText";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        StartDate,
                        EndDate,
                        ProjectStatus,
                        TimeMetric,
                        SummaryNote,
                        ProjectPlanFileUrl,
                        ProjectManagerIds,
                        TotalWork,
                        ActualWork,
                        ProjectedWork,
                        PlanDirty,
                        TasksDirty,
                        TaskStats,
                        IssueStats,
                        DocumentStats,
                        DiscussionStats,
                        IsSynched,
                        ServerRelativeWebUrl,
                        LastUpdatedSummaryNote,
                        IsWPSandboxActivated,
                        WPSandboxNavText
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class SetupFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string SiteName = "Setup.SiteName";
            public const string SendEmailUpdates = "Setup.SendEmailUpdates";
            public const string AllowEmailReplies = "Setup.AllowEmailReplies";
            public const string EmailFromAddress = "Setup.EmailFromAddress";
            public const string SMTPInfo = "Setup.SMTPInfo";
            public const string POPInfo = "Setup.POPInfo";
            public const string POPEmail = "Setup.POPEmail";
            public const string POPPassword = "Setup.POPPassword";
            public const string LicenseKey = "Setup.LicenseKey";
            public const string LogoUrl = "Setup.LogoUrl";
            public const string SyncIntervalHours = "Setup.SyncIntervalHours";
            public const string MSProjectIntegration = "Setup.MSProjectIntegration";
            public const string MinMSProjectPluginVer = "Setup.MinMSProjectPluginVer";
            public const string HoursPerDay = "Setup.HoursPerDay";
            public const string IsWPSandboxActivated = "Setup.IsWPSandboxActivated";
            public const string WPSandboxNavText = "Setup.WPSandboxNavText";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        SiteName,
                        SendEmailUpdates,
                        AllowEmailReplies,
                        EmailFromAddress,
                        SMTPInfo,
                        POPInfo,
                        POPEmail,
                        POPPassword,
                        LicenseKey,
                        LogoUrl,
                        SyncIntervalHours,
                        MSProjectIntegration,
                        MinMSProjectPluginVer,
                        HoursPerDay,
                        IsWPSandboxActivated,
                        WPSandboxNavText
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class UserFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string SPUserId = "User.SPUserId"; 
            public const string Login = "User.Login";
            public const string Password = "User.Password";
            public const string PasswordSecurityQuestion = "User.PasswordSecurityQuestion";
            public const string PasswordSecurityAnswer = "User.PasswordSecurityAnswer";
            public const string FirstName = "User.FirstName";
            public const string FullName = "User.FullName";
            public const string LastName = "User.LastName";
            public const string PhoneNumber = "User.PhoneNumber";
            public const string Email = "User.Email";
            public const string IM = "User.IM";
            public const string IMClient = "User.IMClient";
            public const string PictureUrl = "User.PictureUrl";
            public const string StatusNote = "User.StatusNote";
            public const string IsActive = "User.IsActive";
            public const string IsAdministrator = "User.IsAdministrator";
            public const string IsDeleted = "User.IsDeleted";
            public const string IsFormsUser = "User.IsFormsUser";
            public const string IsSharePointAdministrator = "User.IsSharePointAdministrator";
            public const string ReceiveEmailNotification = "User.ReceiveEmailNotification";
            public const string LastLoginTime = "User.LastLoginTime";
            public const string ProjectIds = "User.ProjectIds";
            public const string IsSharePointAccount = "User.IsSharePointAccount";
            public const string AddToAllProjects = "User.AddToAllProjects";
            public const string CompanyName = "User.CompanyName";
            public const string ManageProjects = "User.ManageProjects";
            public const string IsADGroup = "User.IsADGroup";
            public const string IsNonExplicitMember = "User.IsNonExplicitMember";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        SPUserId,
                        Login,
                        Password,
                        PasswordSecurityQuestion,
                        PasswordSecurityAnswer,
                        FirstName,
                        FullName,
                        LastName,
                        PhoneNumber,
                        Email,
                        IM,
                        IMClient,
                        PictureUrl,
                        StatusNote,
                        IsActive,
                        IsAdministrator,
                        IsDeleted,
                        IsFormsUser,
                        IsSharePointAdministrator,
                        ReceiveEmailNotification,
                        LastLoginTime,
                        ProjectIds,
                        IsSharePointAccount,
                        AddToAllProjects,
                        CompanyName,
                        ManageProjects,
                        IsADGroup,
                        IsNonExplicitMember
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class TeamMemberFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string UserId = "TeamMember.UserId";
            public const string RoleOnProject = "TeamMember.RoleOnProject";
            public const string IsProjectManager = "TeamMember.IsProjectManager";
            public const string KiiroUser = "TeamMember.KiiroUser";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        UserId,
                        RoleOnProject,
                        IsProjectManager,
                        KiiroUser
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class WorkFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string StartDate = "Work.StartDate";
            public const string EndDate = "Work.EndDate";
            public const string AssignedWork = "Work.AssignedWork";
            public const string AssignedToList = "Work.AssignedToList";
            public const string ParentTasks = "Work.ParentTasks";
            public const string IsHighPriority = "Work.IsHighPriority";
            public const string WorkItemType = "Work.WorkItemType";
            public const string Status = "Work.Status";
            public const string StatusNote = "Work.StatusNote";
            public const string IsLate = "Work.IsLate";
            public const string IsSlipping = "Work.IsSlipping";
            public const string IsFromProjectPlan = "Work.IsFromProjectPlan";
            public const string IsDirty = "Work.IsDirty";
            public const string PercentageComplete = "Work.PercentageComplete";
            public const string PlanId = "Work.PlanId";
            public const string MembersEmail = "Work.MembersEmail";
            public const string ProjectManagersEmail = "Work.ProjectManagersEmail";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        StartDate,
                        EndDate,
                        AssignedWork,
                        AssignedToList,
                        ParentTasks,
                        IsHighPriority,
                        WorkItemType,
                        Status,
                        StatusNote,
                        IsLate,
                        IsSlipping,
                        IsFromProjectPlan,
                        IsDirty,
                        PercentageComplete,
                        PlanId,
                        MembersEmail,
                        ProjectManagersEmail
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class ActivityHistoryFieldNames
        {
            public const string ItemId = BaseEntityFieldNames.ItemId;
            public const string SiteCollectionId = BaseEntityFieldNames.SiteCollectionId;
            public const string ServerRelativeUrl = BaseEntityFieldNames.ServerRelativeUrl;
            public const string CreatedBy = BaseEntityFieldNames.CreatedBy;
            public const string CreatedDate = BaseEntityFieldNames.CreatedDate;
            public const string ModifiedBy = BaseEntityFieldNames.ModifiedBy;
            public const string ModifiedDate = BaseEntityFieldNames.ModifiedDate;
            public const string IsNew = BaseEntityFieldNames.IsNew;
            public const string Title = BaseEntityFieldNames.Title;
            public const string Description = BaseEntityFieldNames.Description;

            public const string ActivityReferenceUrl = "ActivityHistory.ActivityReferenceUrl";
            public const string ActivityItemType = "ActivityHistory.ActivityItemType";
            public const string EventType = "ActivityHistory.EventType";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        ActivityReferenceUrl,
                        ActivityItemType,
                        EventType
                    } );
                    return allFieldNames;
                }
            }
        }

        public static class CustomItemFieldNames
        {
            public const string Id = "ID";
            public const string CreatedBy = "Author";
            public const string CreatedDate = "Created";
            public const string ModifiedBy = "Editor";
            public const string ModifiedDate = "Modified";
            public const string Title = "Title";

            public static List<string> AllFieldNames
            {
                get
                {
                    return new List<string> ( )
                    {
                        Id,
                        CreatedBy,
                        CreatedDate,
                        ModifiedBy,
                        ModifiedDate,
                        Title
                    };
                }
            }
        }


        public static class NavigationFieldNames
        {
            public const string Id = "ID";
            public const string Title = "Title";
            public const string TargetUrl = "Navigation.TargetUrl";
            public const string SiteLevel = "Navigation.SiteLevel";
            public const string Sequence = "Navigation.Sequence";
            public const string IsVisible = "Navigation.IsVisible";
            public const string GroupVisibility = "Navigation.GroupVisibility";
            public const string PageHiLiteCollection = "Navigation.PageHiLiteCollection";
            public const string PageDisplayCollection = "Navigation.PageDisplayCollection";
            //public const string Description = "ItemBase.Description";

            public static List<string> AllMainNavigationFieldNames
            {
                get
                {
                    return new List<string> ( )
                    {
                        Id,
                        Title,
                        TargetUrl,
                        SiteLevel,
                        Sequence,
                        IsVisible,
                        GroupVisibility,
                        PageHiLiteCollection//,
                        //Description
                    };
                }
            }

            public static List<string> AllSubNavigationFieldNames
            {
                get
                {
                    return new List<string> ( )
                    {
                        Id,
                        Title,
                        TargetUrl,
                        SiteLevel,
                        Sequence,
                        IsVisible,
                        GroupVisibility,
                        PageHiLiteCollection,
                        PageDisplayCollection//,
                        //Description
                    };
                }
            }
        }

        #endregion

        #region Pager Entity Types

        public static class PagerEntity
        {            
            public const string Projects = "PROJECTS";
            public const string Users= "USERS";
            public const string Documents = "DOCUMENTS";
            public const string Discussions = "DISCUSSIONS";
            public const string Work = "WORK";
            public const string TeamMembers = "MEMBERS";
            public const string SearchResults = "Results";
            public const string CustomItems = "ITEMS";

            public static List<string> AllFieldNames
            {
                get
                {
                    List<string> allFieldNames = BaseEntityFieldNames.AllFieldNames;
                    allFieldNames.AddRange ( new List<string> ( )
                    {
                        Projects,
                        Users,
                        Documents,
                        Discussions,
                        Work,
                        TeamMembers,
                        SearchResults,
                        CustomItems
                    } );
                    return allFieldNames;
                }
            }
        }
        #endregion


        /// <summary>
        /// Constants used to represent the names of the Managed Types returned by Search
        /// </summary>
        public static class SearchFields
        {
            public const string WorkId = "WorkId";
            public const string Rank = "Rank";
            public const string Title = "Title";
            public const string Author = "Author";
            public const string Size = "Size";
            public const string Path = "Path";
            public const string Description = "Description";
            public const string SiteName = "SiteName";
            public const string CollapsingStatus = "CollapsingStatus";
            public const string HitHighlightedSummary = "HitHighlightedSummary";
            public const string HitHighlightedProperties = "HitHighlightedProperties";
            public const string ContentClass = "ContentClass";
            public const string IsDocument = "IsDocument";
            public const string PictureThumbnailURL = "PictureThumbnailURL";
            public const string ContentType = "ContentType";

            public static List<string> AllSearchFields
            {
                get
                {
                    return new List<string> ( )
                    {
                        WorkId,
                        Rank,
                        Title,
                        Author,
                        Size,
                        Path,
                        Description,
                        SiteName,
                        CollapsingStatus,
                        HitHighlightedSummary,
                        HitHighlightedProperties,
                        ContentClass,
                        IsDocument,
                        PictureThumbnailURL,
                        ContentType
                    };
                }
            }
        }

        /// <summary>
        /// Constants used for Image Urls (small Pictures in Search Results and icons in Project Feed)
        /// </summary>
        public class ImageUrls
        {
            public const string Home = "/_layouts/images/Kiiro/timeline-arrow.png";
            public const string Document = "/_layouts/images/Kiiro/label-document.png";
            public const string Folder = "/_layouts/images/Kiiro/icon-folder-open.png";
            public const string User = "/_layouts/images/Kiiro/label-user.png";
            public const string Project = "/_layouts/images/Kiiro/icon-project-plan.png";
            public const string Discussion = "/_layouts/images/Kiiro/label-discussion.png";
            public const string Comment = "/_layouts/images/Kiiro/label-discussion.png";
            public const string Task = "/_layouts/images/Kiiro/label-task.png";
            public const string Issue = "/_layouts/images/Kiiro/label-issue.png";
            public const string ActivityHistory = "/_layouts/images/Kiiro/person-thumb.gif";
        }

        public static class AJAXQueryString
        {
            public const string OperationType = "operationType";
            public const string ItemId = "itemId";
            public const string StatusNote = "statusNote";
            public const string PercentComplete = "percentComplete";
            public const string IssueStatus = "issueStatus";
            public const string ProjectSRU = "projectSRU";
            public const string AjaxCurrentUser = "currentUser";
            public const string UserLogin = "userLogin";
            public const string Destination = "destination";
            public const string Name = "name";
        }

        public static class WebConfigModifications
        {
            public static List<SPWebConfigModification> AllModifications = new List<SPWebConfigModification>
            {
                new SPWebConfigModification
                {
                    Path = "configuration/SharePoint/PeoplePickerWildcards",
                    Name = string.Format ( "add[@name='{0}'][@value='%']", Constants.Permissions.FBAMembershipProviderName ),
                    Sequence = 1,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                    Value = string.Format ( "<add name='{0}' value='%' />", Constants.Permissions.FBAMembershipProviderName )
                },
                new SPWebConfigModification
                {
                    Path = "configuration/system.web/authentication",
                    Name = "forms",
                    Sequence = 1,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                    Value = "<forms />"
                },
                new SPWebConfigModification
                {
                    Path = "configuration/system.web/authentication/forms",
                    Name = "loginUrl",
                    Sequence = 2,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute,
                    Value = "/_layouts/Kiiropages/login.aspx"
                },
                new SPWebConfigModification
                {
                    Path = "configuration/system.web/authentication/forms",
                    Name = "timeout",
                    Sequence = 3,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute,
                    Value = "525600"
                },
                //new SPWebConfigModification
                //{
                //    Path = "configuration/system.web/compilation/assemblies",
                //    Name = string.Format("add[@assembly='Kiiro.SiteDefinition, Version={0}, Culture=neutral, PublicKeyToken=5b2f4277f61b7816']", Constants.AssemblyInfo.Version ),
                //    Sequence = 1,
                //    Owner = AppName.Proper,
                //    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                //    Value = string.Format ( "<add assembly='Kiiro.SiteDefinition, Version={0}, Culture=neutral, PublicKeyToken=5b2f4277f61b7816' />", Constants.AssemblyInfo.Version )
                //},
                new SPWebConfigModification
                {
                    Path = "configuration/system.web",
                    Name = "membership",
                    Sequence = 1,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                    Value = "<membership />"
                },
                new SPWebConfigModification
                {
                    Path = "configuration/system.web/membership",
                    Name = "defaultProvider",
                    Sequence = 2,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureAttribute,
                    Value = Constants.Permissions.FBAMembershipProviderName
                },
                new SPWebConfigModification
                {
                    Path = "configuration/system.web/membership",
                    Name = "providers",
                    Sequence = 3,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                    Value = "<providers />"
                },                
                new SPWebConfigModification
                {
                    Path = "configuration/system.web/membership/providers",
                    Name = string.Format("add[@applicationName='Kiiro'][@MembershipList='Users'][@userIDFieldName='User.Login'][@passwordFieldName='User.Password'][@name='{0}'][@type='Kiiro.Membership.MembershipProvider, Kiiro.Membership, Version={1}, Culture=neutral, PublicKeyToken=5b2f4277f61b7816']", Constants.Permissions.FBAMembershipProviderName, Constants.AssemblyInfo.Version),
                    Sequence = 4,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                    Value = string.Format("<add applicationName='Kiiro' MembershipList='Users' userIDFieldName='User.Login' passwordFieldName='User.Password' name='{0}' type='Kiiro.Membership.MembershipProvider, Kiiro.Membership, Version={1}, Culture=neutral, PublicKeyToken=5b2f4277f61b7816' />", Constants.Permissions.FBAMembershipProviderName, Constants.AssemblyInfo.Version)
                },
                new SPWebConfigModification
                {
                    Path = "configuration/system.web/httpModules",
                    Name = string.Format("add[@name='KiiroHttpModule'][@type='Kiiro.Model.HttpModule.KiiroHttpModule, Kiiro.Model, Version={0}, Culture=neutral, PublicKeyToken=5b2f4277f61b7816']", Constants.AssemblyInfo.Version),
                    Sequence = 1,
                    Owner = AppName.Proper,
                    Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
                    Value = string.Format("<add name='KiiroHttpModule' type='Kiiro.Model.HttpModule.KiiroHttpModule, Kiiro.Model, Version={0}, Culture=neutral, PublicKeyToken=5b2f4277f61b7816' />", Constants.AssemblyInfo.Version),
                }
            };
        }

        public static class NavigationItems
        {
            #region MainNavItems
            public static List<NavigationItem> MainNavItems = new List<NavigationItem>{
            new NavigationItem{
                Title="Activity",
                TargetUrl="/default.aspx",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/default.aspx"}},
            new NavigationItem{
                Title="Projects",
                TargetUrl="/ActiveProjects.aspx",
                SiteLevel="Portal",
                Sequence=2,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/ActiveProjects.aspx","/BeingPlannedProjects.aspx","/ClosedProjects.aspx","/NewProject.aspx"}},
            new NavigationItem{
                Title="My Work",
                TargetUrl="/WorkOnAllProjects.aspx",
                SiteLevel="Portal",
                Sequence=3,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/WorkOnAllProjects.aspx"}},
            new NavigationItem{
                Title="Security",
                TargetUrl="/AllUsers.aspx",
                SiteLevel="Portal",
                Sequence=4,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalOwner},
                PageHiLiteCollection=new List<string>{"/AllUsers.aspx","/NewUser.aspx","/DisplayUser.aspx","/EditUser.aspx","/NewGroup.aspx","/EditGroup.aspx"}},
            new NavigationItem{
                Title="Lists",
                TargetUrl="/Lists.aspx",
                SiteLevel="Portal",
                Sequence=5,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/Lists.aspx","/AllCustomItems.aspx","/NewForm.aspx","/EditForm.aspx","/DispForm.aspx"}},
            new NavigationItem{
                Title="Web Parts",
                TargetUrl="/WebPartPage.aspx",
                SiteLevel="Portal",
                Sequence=6,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/WebPartPage.aspx"}},
            new NavigationItem{
                Title="Summary",
                TargetUrl="/default.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/default.aspx"}},
            new NavigationItem{
                Title="Work",
                TargetUrl="/AllWork.aspx",
                SiteLevel="Project",
                Sequence=2,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/AllWork.aspx","/MyWork.aspx","/DisplayIssue.aspx","/DisplayTask.aspx","/EditIssue.aspx","/EditTask.aspx","/NewIssue.aspx","/NewTask.aspx"}},
            new NavigationItem{
                Title="Team",
                TargetUrl="/Team.aspx",
                SiteLevel="Project",
                Sequence=3,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/Team.aspx","/NewTeamMember.aspx","/EditTeamMember.aspx","/DisplayUser.aspx","/EditUser.aspx"}},
            new NavigationItem{
                Title="Documents",
                TargetUrl="/Documents.aspx",
                SiteLevel="Project",
                Sequence=4,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/Documents.aspx","/Upload.aspx","/DocumentHistory.aspx","/EditDocument.aspx"}},
            new NavigationItem{
                Title="Discussions",
                TargetUrl="/AllDiscussions.aspx",
                SiteLevel="Project",
                Sequence=5,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/AllDiscussions.aspx","/DisplayDiscussion.aspx","/NewDiscussion.aspx","/EditDiscussion.aspx","/EditComment.aspx"}},
            new NavigationItem{
                Title="Lists",
                TargetUrl="/Lists.aspx",
                SiteLevel="Project",
                Sequence=6,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/Lists.aspx","/AllCustomItems.aspx","/NewForm.aspx","/EditForm.aspx","/DispForm.aspx"}},
            new NavigationItem{
                Title="Web Parts",
                TargetUrl="/WebPartPage.aspx",
                SiteLevel="Project",
                Sequence=7,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageHiLiteCollection=new List<string>{"/WebPartPage.aspx"}},
            new NavigationItem{
                Title="Settings",
                TargetUrl="/EditProjectSettings.aspx",
                SiteLevel="Project",
                Sequence=8,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalOwner,KiiroGroup.ProjectOwner},
                PageHiLiteCollection=new List<string>{"/EditProjectSettings.aspx"}}
        };
            #endregion

            #region SubNavItems
            public static List<NavigationItem> SubNavItems = new List<NavigationItem>{
            new NavigationItem{
                Title="Recent Activity",
                TargetUrl="/default.aspx",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/default.aspx"},
                PageHiLiteCollection=new List<string>{"/default.aspx"}},
            new NavigationItem{
                Title="Active",
                TargetUrl="/ActiveProjects.aspx",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/ActiveProjects.aspx","/BeingPlannedProjects.aspx","/ClosedProjects.aspx"},
                PageHiLiteCollection=new List<string>{"/ActiveProjects.aspx"}},
            new NavigationItem{
                Title="Being Planned",
                TargetUrl="/BeingPlannedProjects.aspx",
                SiteLevel="Portal",
                Sequence=2,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/ActiveProjects.aspx","/BeingPlannedProjects.aspx","/ClosedProjects.aspx"},
                PageHiLiteCollection=new List<string>{"/BeingPlannedProjects.aspx"}},
            new NavigationItem{
                Title="Closed",
                TargetUrl="/ClosedProjects.aspx",
                SiteLevel="Portal",
                Sequence=3,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/ActiveProjects.aspx","/BeingPlannedProjects.aspx","/ClosedProjects.aspx"},
                PageHiLiteCollection=new List<string>{"/ClosedProjects.aspx"}},
            new NavigationItem{
                Title="My Work",
                TargetUrl="/WorkOnAllProjects.aspx",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/WorkOnAllProjects.aspx"},
                PageHiLiteCollection=new List<string>{"/WorkOnAllProjects.aspx"}},
            new NavigationItem{
                Title="Users And Groups",
                TargetUrl="/AllUsers.aspx",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/AllUsers.aspx"},
                PageHiLiteCollection=new List<string>{"/AllUsers.aspx"}},            
            new NavigationItem{
                Title="[Title]",
                TargetUrl="/",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/AllCustomItems.aspx","/AllMainNavigationItems.aspx","/AllSubNavigationItems.aspx","/DisplayUser.aspx","/EditUser.aspx","/EditGroup.aspx","/DispForm.aspx","/EditForm.aspx","/NewForm.aspx"},
                PageHiLiteCollection=new List<string>{"/AllCustomItems.aspx","/AllMainNavigationItems.aspx","/AllSubNavigationItems.aspx","/DisplayUser.aspx","/EditUser.aspx","/EditGroup.aspx","/DispForm.aspx","/EditForm.aspx","/NewForm.aspx"}},
            new NavigationItem{
                Title="New User",
                TargetUrl="/",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/NewUser.aspx"},
                PageHiLiteCollection=new List<string>{"/NewUser.aspx"}},            
            new NavigationItem{
                Title="New Group",
                TargetUrl="/",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/NewGroup.aspx"},
                PageHiLiteCollection=new List<string>{"/NewGroup.aspx"}},            
            new NavigationItem{
                Title="Lists",
                TargetUrl="/Lists.aspx",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/Lists.aspx"},
                PageHiLiteCollection=new List<string>{"/Lists.aspx"}},
            new NavigationItem{
                Title="Settings",
                TargetUrl="/",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/NewProject.aspx"},
                PageHiLiteCollection=new List<string>{"/NewProject.aspx"}},
            new NavigationItem{
                Title="Kiiro Settings",
                TargetUrl="/EditSetup.aspx",
                SiteLevel="Portal",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/EditSetup.aspx"},
                PageHiLiteCollection=new List<string>{"/EditSetup.aspx"}},
            new NavigationItem{
                Title="All Work",
                TargetUrl="/AllWork.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/AllWork.aspx","/MyWork.aspx"},
                PageHiLiteCollection=new List<string>{"/AllWork.aspx"}},
            new NavigationItem{
                Title="My Work",
                TargetUrl="/MyWork.aspx",
                SiteLevel="Project",
                Sequence=2,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/AllWork.aspx","/MyWork.aspx"},
                PageHiLiteCollection=new List<string>{"/MyWork.aspx"}},
            new NavigationItem{
                Title="New Issue",
                TargetUrl="/NewIssue.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/NewIssue.aspx"},
                PageHiLiteCollection=new List<string>{"/NewIssue.aspx"}},
            new NavigationItem{
                Title="New Task",
                TargetUrl="/NewTask.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/NewTask.aspx"},
                PageHiLiteCollection=new List<string>{"/NewTask.aspx"}},
            new NavigationItem{
                Title="Edit Issue",
                TargetUrl="/EditIssue.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/EditIssue.aspx"},
                PageHiLiteCollection=new List<string>{"/EditIssue.aspx"}},
            new NavigationItem{
                Title="Edit Task",
                TargetUrl="/EditTask.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/EditTask.aspx"},
                PageHiLiteCollection=new List<string>{"/EditTask.aspx"}},
            new NavigationItem{
                Title="Team Members",
                TargetUrl="/Team.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/Team.aspx"},
                PageHiLiteCollection=new List<string>{"/Team.aspx"}},
            new NavigationItem{
                Title="New Team Member",
                TargetUrl="/NewTeamMember.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/NewTeamMember.aspx"},
                PageHiLiteCollection=new List<string>{"/NewTeamMember.aspx"}},
            new NavigationItem{
                Title="Documents",
                TargetUrl="/Documents.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/Documents.aspx","/Upload.aspx","/EditDocument.aspx","/DocumentHistory.aspx"},
                PageHiLiteCollection=new List<string>{"/Documents.aspx","/Upload.aspx","/EditDocument.aspx","/DocumentHistory.aspx"}},
            new NavigationItem{
                Title="Discussions",
                TargetUrl="/AllDiscussions.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/AllDiscussions.aspx"},
                PageHiLiteCollection=new List<string>{"/AllDiscussions.aspx"}},
            new NavigationItem{
                Title="New Discussion",
                TargetUrl="/NewDiscussion.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/NewDiscussion.aspx"},
                PageHiLiteCollection=new List<string>{"/NewDiscussion.aspx"}},
            new NavigationItem{
                Title="Edit Discussion",
                TargetUrl="/EditDiscussion.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/EditDiscussion.aspx"},
                PageHiLiteCollection=new List<string>{"/EditDiscussion.aspx"}},
            new NavigationItem{
                Title="Edit Comment",
                TargetUrl="/EditComment.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/EditComment.aspx"},
                PageHiLiteCollection=new List<string>{"/EditComment.aspx"}},
            new NavigationItem{
                Title="Lists",
                TargetUrl="/Lists.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/Lists.aspx"},
                PageHiLiteCollection=new List<string>{"/Lists.aspx"}},
            new NavigationItem{
                Title="Settings",
                TargetUrl="/EditProjectSettings.aspx",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/EditProjectSettings.aspx"},
                PageHiLiteCollection=new List<string>{"/EditProjectSettings.aspx"}},
            new NavigationItem{
                Title="[Title]",
                TargetUrl="/",
                SiteLevel="Project",
                Sequence=1,
                IsVisible=true,
                GroupVisibility=new List<KiiroGroup>{KiiroGroup.PortalMember,KiiroGroup.PortalOwner,KiiroGroup.ProjectMember,KiiroGroup.ProjectOwner,KiiroGroup.Visitor},
                PageDisplayCollection=new List<string>{"/AllCustomItems.aspx","/AllMainNavigationItems.aspx","/AllSubNavigationItems.aspx","/DispForm.aspx","/EditForm.aspx","/NewForm.aspx"},
                PageHiLiteCollection=new List<string>{"/AllCustomItems.aspx","/AllMainNavigationItems.aspx","/AllSubNavigationItems.aspx","/DispForm.aspx","/EditForm.aspx","/NewForm.aspx"}}
        };
            #endregion
        }
    }
}

/*************************************************************************
 * 
 * $Log: /Internal Projects/Kiiro/Kiiro.Common/Utility/Constants.cs $
 * 
 * 74    4/07/10 2:33p Camerons
 * 
 * 73    2/24/10 5:14p Camerons
 * 
 * 72    2/23/10 11:46a Camerons
 * 
 * 71    2/16/10 10:11a Camerons
 * 
 * 70    2/12/10 10:58a Camerons
 * 
 * 69    2/09/10 12:48p Camerons
 * 
 * 68    2/08/10 5:04p Camerons
 * 
 * 67    1/25/10 1:17p Camerons
 * 
 * 66    1/21/10 2:40p Camerons
 * 
 * 65    1/13/10 1:10p Camerons
 * 
 * 64    1/12/10 12:45p Camerons
 * 
 * 63    1/12/10 12:02p Camerons
 * 
 * 62    1/12/10 9:43a Camerons
 * 
 * 61    1/11/10 11:51a Camerons
 * 
 * 60    12/21/09 5:06p Camerons
 * 
 * 59    18/12/09 1:49p Adamw
 * 
 * 58    12/15/09 1:26p Camerons
 * 
 * 57    26/11/09 2:23p Shafia
 * 
 * 56    26/11/09 10:35a Camerons
 * 
 * 55    26/11/09 10:02a Camerons
 * 
 * 54    24/11/09 4:22p Shafia
 * 
 * 53    24/11/09 10:55a Shafia
 * Discussion now stores the HTML format of the discussion text and uses
 * the WMD editor
 * 
 * 52    17/11/09 6:46p Camerons
 * 
 * 51    11/17/09 4:00p Stefanf
 * 
 * 50    10/27/09 3:53p Adamw
 * 
 * 49    26/10/09 6:35p Camerons
 * 
 * 48    21/10/09 3:06p Shafia
 * using CacheKeys constants instead of hard coding key names
 * 
 * 47    19/10/09 10:09a Shafia
 * AllProjectFileUrls didn't include few pages and now it does.
 * 
 * 46    16/10/09 9:56a Camerons
 * Versioned to 1.1.x.x
 * 
 * 45    15/10/09 9:34a Camerons
 * 
 * 44    10/08/09 1:16p Stefanf
 * 
 * 43    10/07/09 2:16p Stefanf
 * 
 * 42    29/09/09 5:42p Camerons
 * 
 * 41    29/09/09 1:22p Camerons
 * Implementing User.SPUserId
 * 
 * 40    29/09/09 12:40p Shafia
 * Implemented WebPart at project level
 * 
 * 39    28/09/09 3:38p Camerons
 * 
 * 38    23/09/09 2:52p Shafia
 * 
 * 37    22/09/09 9:59a Shafia
 * 
 * 36    21/09/09 2:01p Camerons
 * Added constant for SPGroupDefintion
 * 
 * 35    16/09/09 1:24p Shafia
 * 
 * 34    14/09/09 4:11p Shafia
 * Added constants for Entity names "Projects, Users, ...etc" to be used
 * for the pager control
 * 
 * 33    4/09/09 3:18p Camerons
 * 
 * 32    4/09/09 10:24a Camerons
 * 
 * 31    9/03/09 12:18p Stefanf
 * 
 * 30    2/09/09 11:01a Camerons
 * 
 * 29    2/09/09 10:37a Camerons
 * 
 * 28    1/09/09 12:26p Camerons
 * Fixed incorrect constants value for one of the SPWebConfigModifications
 * 
 * 27    8/31/09 3:36p Stefanf
 * 
 * 26    31/08/09 12:16p Shafia
 * added Project.LastUpdatedSummaryNote for Project FieldNames and
 * currentUser for AjaxQueryString
 * 
 * 25    31/08/09 11:56a Camerons
 * 
 * 24    21/08/09 5:27p Camerons
 * Versioned assemblies to 1.1.x.x
 * 
 * 23    8/19/09 3:18p Camerons
 * 
 * 22    17/08/09 10:38a Camerons
 * Added check-in comments section
 * 
 ************************************************************************/